接續上一篇的內容
2.Cookie 是什麼?
Cookie 是瀏覽器儲存的一小段資料,主要用來協助網站維持使用者狀態。
HTTP 本身是無狀態(Stateless)的,也就是說,伺服器不會單憑 HTTP 協定自動記得上一個請求是誰。
Cookie 可以協助解決這個問題。
Cookie 登入流程
用 Express 設定 Cookie
安裝 npm install cookie-parser
const express = require("express");
const cookieParser = require("cookie-parser");
const app = express();
app.use(cookieParser());
app.get("/login", (req, res) => {
res.cookie("sessionId", "example-session-id", {
httpOnly: true,
secure: true,
sameSite: "lax"
});
res.send("Cookie 已設定");
});
app.get("/profile", (req, res) => {
console.log(req.cookies.sessionId);
res.send("取得 Cookie");
});
這裡的 example-session-id 只是示範值,正式系統必須使用安全、不可預測的 Session ID,並由後端驗證
特別注意:HttpOnly 可以降低 Cookie 被 JavaScript 竊取的風險,但不能單獨防止 CSRF 或所有 XSS 攻擊。
3.Cookie、Session、Token 有什麼不同?
這三個概念我之前非常容易混淆 XD
最重要的觀念:Cookie 是傳遞資料的機制,Session 是管理狀態的方式,Token 則是憑證。 它們不是互斥的技術。